home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / comm / term / term34Source.lha / termGlobal.h < prev    next >
C/C++ Source or Header  |  1993-07-16  |  44KB  |  1,673 lines

  1. /*
  2. **    termGlobal.h
  3. **
  4. **    Global data and symbol definitions
  5. **
  6. **    Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifdef DEBUG
  11. #include "termDebug.h"
  12. #endif    /* DEBUG */
  13.  
  14.     /* Jump table entry. */
  15.  
  16. typedef BYTE (* __regargs JUMP)(UBYTE Char);
  17.  
  18.     /* Pointer to function returning nothing. */
  19.  
  20. typedef VOID (* VPTR)();
  21.  
  22.     /* Menu item codes. */
  23.  
  24. enum    {    MEN_SAVE_AS_PICTURE=1,MEN_SAVE_AS_TEXT,MEN_PRINT_SCREEN,MEN_PRINT_CLIP,MEN_CAPTURE_TO_FILE,
  25.         MEN_CAPTURE_TO_PRINTER,MEN_ICONIFY,MEN_ABOUT,MEN_QUIT,
  26.  
  27.         MEN_COPY,MEN_PASTE,MEN_CLEAR,
  28.  
  29.         MEN_EXECUTE_DOS_COMMAND,MEN_EXECUTE_REXX_COMMAND,
  30.  
  31.         MEN_PHONEBOOK,MEN_REDIAL,MEN_DIAL_NUMBER,MEN_SEND_BREAK,
  32.         MEN_HANG_UP,MEN_WAIT,MEN_FLUSH_BUFFER,MEN_RELEASE_DEVICE,
  33.  
  34.         MEN_UPLOAD_ASCII,MEN_DOWNLOAD_ASCII,MEN_UPLOAD_TEXT,MEN_DOWNLOAD_TEXT,MEN_EDIT_AND_UPLOAD_TEXT,
  35.         MEN_UPLOAD_BINARY,MEN_DOWNLOAD_BINARY,
  36.  
  37.         MEN_CLEAR_BUFFER,MEN_DISPLAY_BUFFER,MEN_CLOSE_BUFFER,MEN_FREEZE_BUFFER,MEN_OPEN_BUFFER,
  38.         MEN_SAVE_BUFFER_AS,
  39.  
  40.         MEN_CLEAR_SCREEN,MEN_RESET_FONT,MEN_RESET_STYLES,MEN_RESET_TERMINAL,
  41.  
  42.         MEN_SERIAL,MEN_MODEM,MEN_SCREEN,MEN_TERMINAL,MEN_SET_EMULATION,MEN_CLIPBOARD,MEN_CAPTURE,MEN_COMMANDS,
  43.         MEN_MISC,MEN_PATH,MEN_TRANSFER_PROTOCOL,MEN_TRANSFER,MEN_TRANSLATION,MEN_MACROS,
  44.         MEN_CURSORKEYS,MEN_FAST_MACROS,MEN_HOTKEYS,MEN_SPEECH,MEN_SOUND,MEN_SET_CONSOLE,MEN_OPEN_SETTINGS,MEN_SAVE_SETTINGS,
  45.         MEN_SAVE_SETTINGS_AS,
  46.  
  47.         MEN_STATUS_WINDOW,MEN_REVIEW_WINDOW,MEN_PACKET_WINDOW,MEN_FAST_MACROS_WINDOW };
  48.  
  49.     /* Menu item code limit, required by the quick dial menu. */
  50.  
  51. #define DIAL_MENU_LIMIT 1000
  52.  
  53.     /* How many phone book entries will be stored in
  54.      * the quick dial menu.
  55.      */
  56.  
  57. #define DIAL_MENU_MAX    50
  58.  
  59.     /* Undefine the following symbols, the preferences header file
  60.      * will use the same names and the same values.
  61.      */
  62.  
  63. #undef PARITY_NONE
  64. #undef PARITY_EVEN
  65. #undef PARITY_ODD
  66. #undef PARITY_MARK
  67. #undef PARITY_SPACE
  68.  
  69.     /* Serial settings. */
  70.  
  71. enum    {    PARITY_NONE,PARITY_EVEN,PARITY_ODD,PARITY_MARK,PARITY_SPACE };
  72.  
  73. enum    {    HANDSHAKING_NONE,HANDSHAKING_RTSCTS,HANDSHAKING_RTSCTS_DSR };
  74. enum    {    DUPLEX_FULL,DUPLEX_HALF };
  75. enum    {    FLOW_NONE,FLOW_XON_XOFF };
  76.  
  77.     /* Terminal settings. */
  78.  
  79. enum    {    CR_IGNORE,CR_ASCR,CR_ASCRLF };
  80. enum    {    LF_IGNORE,LF_ASLF,LF_ASLFCR };
  81. enum    {    EMULATION_ANSIVT100,EMULATION_ATOMIC,EMULATION_TTY,EMULATION_EXTERNAL,EMULATION_HEX };
  82. enum    {    COLOUR_AMIGA,COLOUR_EIGHT,COLOUR_SIXTEEN,COLOUR_MONO };
  83.  
  84.     /* Protocol types. */
  85.  
  86. enum    {    PROTOCOL_XMODEM,PROTOCOL_XMODEMCRC,PROTOCOL_YMODEM,PROTOCOL_ZMODEM };
  87.  
  88.     /* Font types. */
  89.  
  90. enum    {    FONT_STANDARD,FONT_IBM,FONT_IBM_RAW };
  91.  
  92.     /* Bell modes. */
  93.  
  94. enum    {    BELL_NONE, BELL_VISIBLE, BELL_AUDIBLE, BELL_BOTH, BELL_SYSTEM };
  95.  
  96.     /* Data flow scanner indices. */
  97.  
  98. enum    {    SCAN_NOCARRIER, SCAN_ZMODEM, SCAN_CONNECT, SCAN_VOICE, SCAN_RING, SCAN_BUSY, SCAN_NODIALTONE,
  99.         SCAN_OK, SCAN_ERROR, SCAN_COUNT };
  100.  
  101.     /* Status types. */
  102.  
  103. enum    {    STATUS_READY,STATUS_HOLDING,STATUS_DIALING,STATUS_UPLOAD,
  104.         STATUS_DOWNLOAD,STATUS_BREAKING,STATUS_HANGUP };
  105.  
  106.     /* Sound types. */
  107.  
  108. enum    {    SOUND_BELL,SOUND_CONNECT,SOUND_DISCONNECT,SOUND_GOODTRANSFER,
  109.         SOUND_BADTRANSFER,SOUND_RING,SOUND_VOICE,SOUND_COUNT };
  110.  
  111.     /* Settings types. */
  112.  
  113. enum    {    PREF_ALL,PREF_SERIAL,PREF_MODEM,PREF_COMMAND,PREF_SCREEN,
  114.         PREF_TERMINAL,PREF_PATH,PREF_MISC,PREF_CLIP,PREF_CAPTURE,
  115.         PREF_FILE,PREF_EMULATION,PREF_TRANSFER };
  116.  
  117.     /* Status line modes. */
  118.  
  119. enum    {    STATUSLINE_DISABLED,STATUSLINE_STANDARD,STATUSLINE_COMPRESSED };
  120.  
  121.     /* Capture filter modes. */
  122.  
  123. enum    {    FILTER_NONE,FILTER_ESCAPE,FILTER_CONTROL,FILTER_BOTH };
  124.  
  125.     /* Scrolling modes. */
  126.  
  127. enum    {    SCROLL_JUMP,SCROLL_SMOOTH };
  128.  
  129.     /* Auto-capture file creation. */
  130.  
  131. enum    {    AUTOCAPTURE_DATE_NAME,AUTOCAPTURE_DATE_INCLUDE };
  132.  
  133.     /* Cursor and numeric keypad modes. */
  134.  
  135. enum    {    KEYMODE_STANDARD,KEYMODE_APPLICATION };
  136.  
  137.     /* Font scales. */
  138.  
  139. enum    {    SCALE_NORMAL,SCALE_HALF };
  140. enum    {    SCALE_ATTR_NORMAL,SCALE_ATTR_TOP2X,SCALE_ATTR_BOT2X,SCALE_ATTR_2X };
  141.  
  142.     /* Character tables. */
  143.  
  144. enum    {    TABLE_ASCII,TABLE_GFX };
  145.  
  146.     /* Transfer types. */
  147.  
  148. enum    {    TRANSFER_BINARY,TRANSFER_TEXT,TRANSFER_ASCII };
  149.  
  150.     /* Translation table entry types. */
  151.  
  152. enum    {    TRANSLATE_SINGLE,TRANSLATE_STRING };
  153.  
  154.     /* Upload panel actions. */
  155.  
  156. enum    {    UPLOAD_TEXT=1,UPLOAD_BINARY,UPLOAD_IGNORE,UPLOAD_ABORT };
  157.  
  158.     /* Alert types. */
  159.  
  160. enum    {    ALERT_NONE,ALERT_BEEP,ALERT_SCREEN,ALERT_BEEP_SCREEN };
  161.  
  162.     /* Online time display modes. */
  163.  
  164. enum    {    ONLINETIME_TIME,ONLINETIME_COST,ONLINETIME_BOTH };
  165.  
  166.     /* Clipboard read errors. */
  167.  
  168. enum    {    CLIPERR_NONE,CLIPERR_NOTEXT,CLIPERR_IFF,CLIPERR_OPEN,CLIPERR_MEM };
  169.  
  170.     /* What to print. */
  171.  
  172. enum    {    PRINT_SCREEN,PRINT_CLIP };
  173.  
  174.     /* Dial command types. */
  175.  
  176. enum    {    DIAL_IGNORE,DIAL_LIST,DIAL_REDIAL };
  177.  
  178.     /* Errors returned by ReconfigureSerial(). */
  179.  
  180. enum    {    RECONFIGURE_FAILURE,RECONFIGURE_NOCHANGE,RECONFIGURE_SUCCESS };
  181.  
  182.     /* Operation codes for SetItem(). */
  183.  
  184. enum    {    SETITEM_SETCHECK,SETITEM_CLRCHECK,SETITEM_ON,SETITEM_OFF };
  185.  
  186.     /* File identification actions. */
  187.  
  188. enum    {    IDENTIFY_IGNORE,IDENTIFY_FILETYPE,IDENTIFY_SOURCE };
  189.  
  190.     /* Generic list types. */
  191.  
  192. enum    {    GLIST_UPLOAD,GLIST_DOWNLOAD,GLIST_DIAL,GLIST_WAIT,GLIST_COUNT };
  193.  
  194.     /* Generic list add operations. */
  195.  
  196. enum    {    ADD_GLIST_BOTTOM,ADD_GLIST_TOP,ADD_GLIST_BEHIND,ADD_GLIST_BEFORE };
  197.  
  198.     /* Transfer window boxes and gadgets. */
  199.  
  200. enum    {    BOX_TRANSFER_1,BOX_TRANSFER_2,
  201.         BOX_TRANSFER_LEFT1,BOX_TRANSFER_RIGHT1,
  202.         BOX_TRANSFER_LEFT2,BOX_TRANSFER_RIGHT2 };
  203.  
  204. enum    {    GAD_TRANSFER_INFORMATION_LIST,
  205.         GAD_TRANSFER_PERCENT,GAD_TRANSFER_TIME,
  206.         GAD_TRANSFER_ABORT,GAD_TRANSFER_SKIP };
  207.  
  208.     /* XPR options setting. */
  209.  
  210. enum    {    GAD_XPROPTIONS_USE=42,GAD_XPROPTIONS_CANCEL };
  211.  
  212.     /* AmigaGuide help context. */
  213.  
  214. enum    {    CONTEXT_MAIN,CONTEXT_SERIAL,CONTEXT_MODEM,CONTEXT_SCREEN,
  215.         CONTEXT_TERMINAL,CONTEXT_CLIP,CONTEXT_CAPTURE,CONTEXT_COMMAND,
  216.         CONTEXT_MISC,CONTEXT_PATHS,CONTEXT_TRANSLATION,CONTEXT_MACROS,
  217.         CONTEXT_CURSOR,CONTEXT_FASTMACROS,CONTEXT_HOTKEYS,CONTEXT_SPEECH,
  218.         CONTEXT_EMULATION,CONTEXT_TRANSFER,CONTEXT_PHONEBOOK,CONTEXT_DATE,
  219.         CONTEXT_DAY,CONTEXT_IMPORT,CONTEXT_RATES,CONTEXT_TIME,
  220.         CONTEXT_COPY,CONTEXT_PASSWORDUSER,CONTEXT_DIAL,CONTEXT_PRINT,
  221.         CONTEXT_TEXTBUFFER,CONTEXT_PACKETWINDOW,CONTEXT_SOUND,
  222.         CONTEXT_LIBS,CONTEXT_ASCII };
  223.  
  224.     /* Character types. */
  225.  
  226. enum    {    CHAR_VANILLA,CHAR_CURSOR,CHAR_FUNCTION,CHAR_HELP,
  227.         CHAR_XON,CHAR_XOFF,CHAR_ENTER,CHAR_RETURN };
  228.  
  229.     /* Review window positioning codes. */
  230.  
  231. enum    {    REVIEW_MOVE_TOP,REVIEW_MOVE_BOTTOM,REVIEW_MOVE_UP,REVIEW_MOVE_DOWN };
  232.  
  233.     /* File type classes. */
  234.  
  235. enum    {    FILETYPE_NONE,FILETYPE_DIR,FILETYPE_FILE,FILETYPE_TEXT,FILETYPE_SOUND,
  236.         FILETYPE_PICTURE,FILETYPE_PREFS,FILETYPE_ARCHIVE,
  237.         FILETYPE_PROGRAM,
  238.  
  239.         FILETYPE_COUNT };
  240.  
  241.     /* Text pacing modes. */
  242.  
  243. enum    {    PACE_DIRECT,PACE_ECHO,PACE_ANYECHO,PACE_PROMPT,PACE_DELAY,PACE_KEYBOARD };
  244.  
  245.     /* Where to open the buffer text window. */
  246.  
  247. enum    {    BUFFER_TOP,BUFFER_END };
  248.  
  249.     /* Where to place the buffer screen horizontally. */
  250.  
  251. enum    {    SCREEN_LEFT,SCREEN_CENTRE,SCREEN_RIGHT };
  252.  
  253.     /* Some raw key codes. */
  254.  
  255. #define HELP_CODE        95
  256. #define RAMIGA_CODE        103
  257.  
  258. #define CURSOR_UP_CODE        76
  259. #define CURSOR_DOWN_CODE    77
  260. #define CURSOR_RIGHT_CODE    78
  261. #define CURSOR_LEFT_CODE    79
  262.  
  263. #define F01_CODE        80
  264. #define F02_CODE        81
  265. #define F03_CODE        82
  266. #define F04_CODE        83
  267. #define F05_CODE        84
  268. #define F06_CODE        85
  269. #define F07_CODE        86
  270. #define F08_CODE        87
  271. #define F09_CODE        88
  272. #define F10_CODE        89
  273.  
  274.     /* A couple of useful minterms. */
  275.  
  276. #define MINTERM_ZERO        0
  277. #define MINTERM_ONE        ABC | ABNC | ANBC | ANBNC | NABC | NABNC | NANBC | NANBNC
  278. #define MINTERM_COPY        ABC | ABNC | NABC | NABNC
  279. #define MINTERM_NOT_C        ABNC | ANBNC | NABNC | NANBNC
  280. #define MINTERM_B_AND_C        ABC | NABC
  281. #define MINTERM_NOT_B_AND_C    ANBC | NANBC
  282. #define MINTERM_B_OR_C        ABC | ABNC | NABC | NABNC | ANBC | NANBC
  283.  
  284.     /* Printer control bits. */
  285.  
  286. #define PRINT_SERIAL    (1 << 0)
  287. #define PRINT_MODEM    (1 << 1)
  288. #define PRINT_SCREEN    (1 << 2)
  289. #define PRINT_TERMINAL    (1 << 3)
  290. #define PRINT_USERNAME    (1 << 4)
  291. #define PRINT_COMMENT    (1 << 5)
  292. #define PRINT_SIZE    (1 << 6)
  293. #define PRINT_DATE    (1 << 7)
  294. #define PRINT_BITS    (1 << 8)
  295.  
  296.     /* Day of week flags. */
  297.  
  298. #define DAY_MONDAY    (1 << 0)
  299. #define DAY_TUESDAY    (1 << 1)
  300. #define DAY_WEDNESDAY    (1 << 2)
  301. #define DAY_THURSDAY    (1 << 3)
  302. #define DAY_FRIDAY    (1 << 4)
  303. #define DAY_SATURDAY    (1 << 5)
  304. #define DAY_SUNDAY    (1 << 6)
  305.  
  306.     /* These signal masks will make life a bit easier. */
  307.  
  308. #define SIG_WINDOW    (1 << Window -> UserPort -> mp_SigBit)
  309. #define SIG_SERIAL    (1 << ReadPort -> mp_SigBit)
  310. #define SIG_PACKET    (1 << PacketWindow -> UserPort -> mp_SigBit)
  311. #define SIG_TIMER    (1 << TimePort -> mp_SigBit)
  312. #define SIG_REVIEW    ((1 << ReviewPort -> mp_SigBit) | (1 << ReviewWindow -> UserPort -> mp_SigBit))
  313. #define SIG_CLIP    (1 << ClipBit)
  314. #define SIG_CHECK    (1 << CheckBit)
  315. #define SIG_WORKBENCH    (1 << WorkbenchPort -> mp_SigBit)
  316.  
  317. #ifdef USE_AREXX
  318. #define SIG_REXX    (1 << TermRexxPort -> mp_SigBit)
  319. #else
  320. #define SIG_REXX    NULL
  321. #endif    /* USE_AREXX */
  322.  
  323.     /* Task termination and handshake signal. Note: don't try this at
  324.      * home kids, we are all trained professionals here!
  325.      */
  326.  
  327. #define SIG_KILL    SIGBREAKF_CTRL_C
  328. #define SIG_HANDSHAKE    SIGF_SINGLE
  329.  
  330.     /* Double-buffered file server command. */
  331.  
  332. #define    SIG_COMMAND    SIGBREAKF_CTRL_D
  333.  
  334.     /* ARexx break signal. */
  335.  
  336. #define SIG_BREAK    SIGBREAKF_CTRL_D
  337.  
  338.     /* Hotkey reset command. */
  339.  
  340. #define SIG_RESET    SIGBREAKF_CTRL_D
  341.  
  342.     /* Skip dial entry. */
  343.  
  344. #define SIG_SKIP    SIGBREAKF_CTRL_D
  345.  
  346.     /* Status bell command. */
  347.  
  348. #define SIG_BELL    SIGBREAKF_CTRL_D
  349.  
  350.     /* Buffer special signals. */
  351.  
  352. #define SIG_TOFRONT    SIGBREAKF_CTRL_D
  353. #define SIG_UPDATE    SIGBREAKF_CTRL_E
  354. #define SIG_MOVEUP    SIGBREAKF_CTRL_F
  355.  
  356.     /* A port signal mask. */
  357.  
  358. #define PORTMASK(P)    (1 << (((struct MsgPort *)(P)) -> mp_SigBit))
  359.  
  360.     /* Replacements for CheckItem() and OnMenu()/OffMenu(). */
  361.  
  362. #define CheckItem(ID,Mode)    SetItem(ID,Mode ? SETITEM_SETCHECK : SETITEM_CLRCHECK)
  363. #define OnItem(ID)        SetItem(ID,SETITEM_ON)
  364. #define OffItem(ID)        SetItem(ID,SETITEM_OFF)
  365.  
  366.     /* A handy signal macro. */
  367.  
  368. #define ClrSignal(Signals)    SetSignal(0,Signals)
  369.  
  370.     /* Definitions to access the line signal setting functions supported by
  371.      * some IO serial boards (namely the ASDG board).
  372.      */
  373.  
  374. #define SIOCMD_SETCTRLLINES    (CMD_NONSTD + 7)
  375. #define SIOB_RTSB        0
  376. #define SIOB_DTRB        1
  377. #define SIOB_RTSF        (1 << SIOB_RTSB)
  378. #define SIOB_DTRF        (1 << SIOB_DTRB)
  379.  
  380.     /* Turn time of day into `compressed' format. */
  381.  
  382. #define DT_GET_TIME(Hour,Minute) ((Minute) / 10 + (Hour) * 6)
  383.  
  384.     /* Vector offsets for the TimeDate structure. */
  385.  
  386. enum    { DT_FIRST_UNIT,DT_NEXT_UNIT };
  387.  
  388.     /* Multiply lines and columns with the current font size. */
  389.  
  390. #define MUL_X(x)        OffsetXTable[x]
  391. #define MUL_Y(y)        OffsetYTable[y]
  392.  
  393.     /* A handy and short alias. */
  394.  
  395. #define TICK            (CHECKIT | MENUTOGGLE)
  396.  
  397.     /* For now the maximum length of a path/file name. */
  398.  
  399. #define MAX_FILENAME_LENGTH    256
  400.  
  401.     /* The maximum width of a line to be stored in the text buffer. */
  402.  
  403. #define BUFFER_LINE_MAX        255
  404.  
  405.     /* User interface definitions. */
  406.  
  407. #define SZLV_Display    1        /* Listview includes display */
  408. #define SZLV_String    2        /* Listview includes string */
  409.  
  410. #define FOLDER_KIND    42        /* Folder selection button. */
  411. #define FILE_KIND    43        /* File selection button. */
  412. #define PASSWORD_KIND    44        /* Password entry string gadget. */
  413. #define SCREEN_KIND    45        /* Screen selection button. */
  414.  
  415. #define SZ_Adjust    TAG_USER+1    /* Adjust object */
  416. #define SZ_AutoWidth    TAG_USER+2    /* Use default width? */
  417. #define SZ_AlignExtra    TAG_USER+3    /* Add extra space to top edge */
  418. #define SZ_NewColumn    TAG_USER+4    /* Start new column */
  419. #define SZ_Lines    TAG_USER+5    /* Number of lines in object */
  420. #define SZ_Chars    TAG_USER+6    /* Number of chars (width) in object */
  421. #define SZ_AlignLeft    TAG_USER+7    /* Align to left border */
  422. #define SZ_AlignRight    TAG_USER+8    /* Align to right border */
  423. #define SZ_AlignCentre    TAG_USER+9    /* Centre it */
  424. #define SZ_AlignBottom    TAG_USER+10    /* Align to window bottom */
  425. #define SZ_GroupCount    TAG_USER+11    /* Create a group with N objects */
  426. #define SZ_GroupNext    TAG_USER+12    /* Skip to next position */
  427. #define SZ_SaveX    TAG_USER+13    /* Don't touch the left edge position. */
  428. #define SZ_SaveY    TAG_USER+14    /* Don't touch the top edge position. */
  429. #define SZ_UseLeft    TAG_USER+15    /* Use this coordinate as left edge. */
  430. #define SZ_UseTop    TAG_USER+16    /* Use this coordinate as top edge. */
  431. #define SZ_UseWidth    TAG_USER+17    /* Use this gadget width. */
  432. #define SZ_UseHeight    TAG_USER+18    /* Use this gadget height. */
  433. #define SZ_FullWidth    TAG_USER+19    /* Use full window width for gadget. */
  434. #define SZ_FullHeight    TAG_USER+20    /* Use full window height for gadget. */
  435. #define SZ_SmallSpace    TAG_USER+21    /* Provide small alignment space. */
  436. #define SZ_LeaveFolder    TAG_USER+22    /* Leave space for folder icon. */
  437. #define SZ_PlaceLeft    TAG_USER+23    /* Place left to current object, don't modify next object position. */
  438. #define SZ_PlaceBelow    TAG_USER+24    /* Place below current object, don't modify next object position. */
  439. #define SZ_InterHeight    TAG_USER+25    /* Use this inter-object space. */
  440.  
  441.     /* Status gadget properties. */
  442.  
  443. #define SGA_FullWidth    (TAG_USER+42)
  444. #define SGA_Mode    (TAG_USER+43)
  445.  
  446.     /* Sizing gadget sizes. */
  447.  
  448. #define SIZE_GADGET_WIDTH_HIGH    18
  449. #define SIZE_GADGET_WIDTH_LOW    13
  450.  
  451.     /* Box information types. */
  452.  
  453. enum    {    BOX_LEFT,BOX_TOP,BOX_WIDTH,BOX_HEIGHT };
  454.  
  455.     /* Some windows to be opened on the main screen. */
  456.  
  457. enum    {    WINDOW_PACKET,WINDOW_STATUS,WINDOW_FILE,
  458.         WINDOW_REVIEW,WINDOW_FAST,WINDOW_FONT,
  459.         WINDOW_SCREEN,WINDOW_PERF,
  460.  
  461.         WINDOW_COUNT };
  462.  
  463.     /* Window alignment information. */
  464.  
  465. #define WC_ALIGNLEFT    (1<<0)
  466. #define WC_ALIGNRIGHT    (1<<1)
  467. #define WC_ALIGNTOP    (1<<2)
  468. #define WC_ALIGNBOTTOM    (1<<3)
  469. #define WC_EXPANDWIDTH    (1<<4)
  470. #define WC_EXPANDHEIGHT    (1<<5)
  471. #define WC_ALIGNSIDE    (1<<6)
  472. #define WC_ALIGNBELOW    (1<<7)
  473.  
  474.     /* Window alignment data. */
  475.  
  476. struct WindowInfo
  477. {
  478.     UWORD    ID;
  479.     UWORD    WindowFlags;
  480.  
  481.     LONG    Left,
  482.         Top,
  483.         Width,
  484.         Height;
  485. };
  486.  
  487.     /* Special character treatment. */
  488.  
  489. struct SpecialKey
  490. {
  491.     UBYTE    Key;
  492.     BYTE    (* __regargs Routine)(VOID);
  493. };
  494.  
  495.     /* Cursor backup data. */
  496.  
  497. struct CursorData
  498. {
  499.     struct TextFont        *CurrentFont;
  500.     WORD             CursorX,
  501.                  CursorY;
  502.     BYTE             Charset;
  503.     BYTE             CharMode[2];
  504.     BYTE             Attributes;
  505.     BYTE             FgPen,
  506.                  BgPen;
  507.     UBYTE             Style;
  508. };
  509.  
  510.     /* File transfer information. */
  511.  
  512. struct FileTransferNode
  513. {
  514.     struct MinNode         Node;
  515.     ULONG             Size;
  516.     STRPTR             Name;
  517. };
  518.  
  519. struct FileTransferInfo
  520. {
  521.     struct MinList         FileList;
  522.     ULONG             TotalSize;
  523.     LONG             TotalFiles;
  524.  
  525.     ULONG             DoneSize;
  526.     LONG             DoneFiles;
  527.  
  528.     struct FileTransferNode    *CurrentFile;
  529.     ULONG             CurrentSize;
  530. };
  531.  
  532.     /* Global data link. */
  533.  
  534. struct TermPort
  535. {
  536.     struct MsgPort         ExecNode;
  537.  
  538.     struct Window        *TopWindow;
  539.  
  540.     struct SignalSemaphore     OpenSemaphore;
  541.  
  542.     LONG             ID,OpenCount,HoldIt;
  543.     LONG             Reserved[5];
  544. };
  545.  
  546.     /* Buffer search support. */
  547.  
  548. struct SearchInfo
  549. {
  550.     UBYTE    Distance[256],
  551.         Pattern[256];
  552.     LONG    FoundX,
  553.         FoundY;
  554.     WORD    PatternWidth;
  555.     WORD    Index;
  556.     BOOL    Forward;
  557. };
  558.  
  559.     /* Support for optimized scrolling routines. */
  560.  
  561. struct ScrollLineInfo
  562. {
  563.     UWORD             Left,Right,Width,
  564.                  ColourMask;
  565. };
  566.  
  567.     /* A dial list entry. */
  568.  
  569. struct PhoneNode
  570. {
  571.     struct Node         VanillaNode;
  572.  
  573.     UBYTE             LocalName[50];
  574.  
  575.     struct PhoneEntry    *Entry;
  576. };
  577.  
  578.     /* A Fast! macro list entry. */
  579.  
  580. struct MacroNode
  581. {
  582.     struct MacroNode    *mn_Succ;    /* Modeled after the default Node. */
  583.     struct MacroNode    *mn_Pred;
  584.  
  585.     WORD             mn_Pad;    /* Included only for Node compatibility. */
  586.  
  587.     UBYTE            *mn_Macro;    /* = ln_Name, title */
  588.     UBYTE            *mn_Code;    /* The execution code. */
  589. };
  590.  
  591.     /* Speech preferences. */
  592.  
  593. struct SpeechConfig
  594. {
  595.     WORD            Rate,
  596.                 Pitch;
  597.     LONG            Frequency;
  598.     BYTE            Sex,
  599.                 Volume,
  600.                 Enabled,
  601.                 Pad;
  602. };
  603.  
  604.     /* Sound preferences */
  605.  
  606. struct SoundConfig
  607. {
  608.     UBYTE            BellFile[MAX_FILENAME_LENGTH],
  609.  
  610.                 ConnectFile[MAX_FILENAME_LENGTH],
  611.                 DisconnectFile[MAX_FILENAME_LENGTH],
  612.  
  613.                 GoodTransferFile[MAX_FILENAME_LENGTH],
  614.                 BadTransferFile[MAX_FILENAME_LENGTH],
  615.  
  616.                 RingFile[MAX_FILENAME_LENGTH],
  617.                 VoiceFile[MAX_FILENAME_LENGTH];
  618.  
  619.     BYTE            Preload,
  620.                 Pad;
  621. };
  622.  
  623.     /* Macro Preferences. */
  624.  
  625. struct MacroKeys
  626. {
  627.     UBYTE            Keys[4][10][256];
  628. };
  629.  
  630.     /* Cursor key preferences. */
  631.  
  632. struct CursorKeys
  633. {
  634.     UBYTE            Keys[4][4][256];
  635. };
  636.  
  637.     /* Translation table entry. */
  638.  
  639. struct TranslationEntry
  640. {
  641.     STRPTR            String;        /* Corresponding code string. */
  642.     UBYTE            Type;        /* Table entry type. */
  643.     UBYTE            Len;        /* String length if any. */
  644.     UBYTE            Extra;        /* Saves space, don't need to allocate memory for this one. */
  645.     UBYTE            Null;        /* Terminating null. */
  646. };
  647.  
  648. struct TranslationHeader
  649. {
  650.     UBYTE            Type;        /* Table entry type. */
  651.     UBYTE            Code;        /* Table offset. */
  652.     UBYTE            Len;        /* Entry length. */
  653.     UBYTE            Pad;
  654. };
  655.  
  656.     /* Buffer translation handle. */
  657.  
  658. struct TranslationHandle
  659. {
  660.     STRPTR            LocalBuffer;
  661.     LONG            LocalLen;
  662.  
  663.     STRPTR            SourceBuffer;
  664.     LONG            SourceLen;
  665.  
  666.     STRPTR            DestinationBuffer;
  667.     LONG            DestinationLen;
  668.  
  669.     struct TranslationEntry    **Table;
  670. };
  671.  
  672.     /* term hotkey configuration. */
  673.  
  674. struct HotkeysOld
  675. {
  676.     UBYTE            termScreenToFront[256];
  677.     UBYTE            BufferScreenToFront[256];
  678.     UBYTE            SkipDialEntry[256];
  679.     BYTE            CommodityPriority;
  680.     BYTE            HotkeysEnabled;
  681.  
  682.     ULONG            Reserved[25];
  683. };
  684.  
  685. struct Hotkeys
  686. {
  687.     UBYTE            termScreenToFront[256];
  688.     UBYTE            BufferScreenToFront[256];
  689.     UBYTE            SkipDialEntry[256];
  690.     BYTE            CommodityPriority;
  691.     BYTE            HotkeysEnabled;
  692.  
  693.     ULONG            Reserved[25];
  694.  
  695.     UBYTE            AbortARexx[256];
  696. };
  697.  
  698.     /* Time/date structure. */
  699.  
  700. struct TimeDate
  701. {
  702.     LONG             Count;        /* Table size. */
  703.     WORD             PayPerUnit[2],    /* Pay for each unit. */
  704.                  SecPerUnit[2];    /* Number of seconds each unit lasts. */
  705.     UBYTE             Time,        /* The time associated with this entry. */
  706.                  Pad;
  707. };
  708.  
  709.     /* Time date header information. */
  710.  
  711. struct TimeDateHeader
  712. {
  713.     UBYTE             Comment[22];    /* Comment for this entry. */
  714.  
  715.     BYTE             Month,        /* Month of year or -1 -> Day = bitmapped days of week. */
  716.                  Day;        /* Day of month or -1 -> standard settings. */
  717. };
  718.  
  719. struct TimeDateNode
  720. {
  721.     struct Node         VanillaNode;    /* Default node entry. */
  722.     UBYTE             Buffer[30];    /* Name buffer. */
  723.  
  724.     struct TimeDate        *Table;        /* Table of time/date entries. */
  725.  
  726.     struct TimeDateHeader     Header;    /* Header information. */
  727. };
  728.  
  729. struct TimeNode
  730. {
  731.     struct Node         VanillaNode;    /* Default node entry. */
  732.     UBYTE             Name[6];    /* Name string. */
  733.     UBYTE             Time;        /* The time for this entry. */
  734. };
  735.  
  736.     /* Serial settings. */
  737.  
  738. struct SerialSettings
  739. {
  740.     ULONG    BaudRate;        /* Baud rate. */
  741.     ULONG    BreakLength;        /* Length of break signal in microseconds. */
  742.     ULONG    SerialBufferSize;    /* Size of serial read/write buffer. */
  743.  
  744.     UBYTE    SerialDevice[MAX_FILENAME_LENGTH];
  745.                     /* Serial device name. */
  746.     LONG    UnitNumber;        /* Serial device unit number. */
  747.  
  748.     BYTE    BitsPerChar;        /* Bits per character. */
  749.     BYTE    Parity;            /* Parity check mode. */
  750.     BYTE    StopBits;        /* Number of stop bits. */
  751.     BYTE    HandshakingProtocol;    /* Handshaking protocol (RTS/CTS, etc.). */
  752.     BYTE    Duplex;            /* Full- or half-duplex? */
  753.  
  754.     BYTE    xONxOFF;        /* xON/xOFF handshaking enabled? */
  755.     BYTE    HighSpeed;        /* Radboogie? */
  756.     BYTE    Shared;            /* Shared device access? */
  757.     BYTE    StripBit8;        /* Strip high-order bit? */
  758.     BYTE    CheckCarrier;        /* Track the carrier signal? */
  759.     BYTE    PassThrough;        /* Pass xON/xOFF characters through to modem? */
  760.     BYTE    Pad;
  761.  
  762.     ULONG    Quantum;        /* Buffer read quantum. */
  763. };
  764.  
  765.     /* Modem settings. */
  766.  
  767. struct ModemSettings
  768. {
  769.     UBYTE    ModemInit[80];        /* Modem init string. */
  770.     UBYTE     ModemExit[80];        /* Modem exit string. */
  771.     UBYTE     ModemHangup[80];    /* Modem hangup string. */
  772.     UBYTE    DialPrefix[80];        /* Dial command prefix. */
  773.     UBYTE    DialSuffix[80];        /* Dial command suffix. */
  774.  
  775.     UBYTE    NoCarrier[16];        /* `No carrier' string. */
  776.     UBYTE    NoDialTone[16];        /* `No dialtone' string. */
  777.     UBYTE    Connect[16];        /* `Connect' string. */
  778.     UBYTE    Voice[16];        /* `Voice' string. */
  779.     UBYTE    Ring[16];        /* `Ring' string. */
  780.     UBYTE    Busy[16];        /* `Busy' string. */
  781.  
  782.     LONG    RedialDelay;        /* Length of redial delay. */
  783.     LONG    DialRetries;        /* Number of dial retries. */
  784.     LONG    DialTimeout;        /* Length of dial timeout. */
  785.     BYTE    ConnectAutoBaud;    /* Use baud rate returned by modem? */
  786.     BYTE    DropDTR;        /* Drop the DTR signal on hangup? */
  787.     BYTE    RedialAfterHangup;    /* Redial list after hangup? */
  788.     BYTE    Pad;
  789.  
  790.     UBYTE    Ok[16];            /* `Ok' string. */
  791.     UBYTE    Error[16];        /* `Error' string. */
  792.  
  793.     BYTE    NoCarrierIsBusy;    /* Treat `NO CARRIER' as `BUSY' signal? */
  794.     BYTE    Pad1;
  795.  
  796.     WORD    ConnectLimit;                /* Connection limit. */
  797.     UBYTE    ConnectLimitMacro[MAX_FILENAME_LENGTH];    /* Macro to be executed when limit is reached. */
  798.  
  799.     LONG    TimeToConnect;        /* Number of seconds to pass between modem picking up
  800.                      * the line and issuing the `CONNECT' message.
  801.                      */
  802. };
  803.  
  804.     /* Command settings. */
  805.  
  806. struct CommandSettings
  807. {
  808.     UBYTE    StartupMacro[256];    /* Startup macro. */
  809.     UBYTE    LogoffMacro[256];    /* Macro executed after carrier has dropped or hung up. */
  810.     UBYTE    UploadMacro[256];    /* Macro to execute after a successful upload. */
  811.     UBYTE    DownloadMacro[256];    /* Macro to execute after a successful download. */
  812. };
  813.  
  814.     /* Screen settings. */
  815.  
  816. struct ScreenSettings
  817. {
  818.     ULONG    DisplayMode;            /* Screen display mode. */
  819.     WORD    ColourMode;            /* The terminal colour mode. */
  820.     UWORD    Colours[16];            /* Colour palette. */
  821.     UBYTE    FontName[MAX_FILENAME_LENGTH];    /* Default user interface font. */
  822.     WORD    FontHeight;            /* Default user interface font height. */
  823.  
  824.     BYTE    MakeScreenPublic;        /* Are we to make our screen public? */
  825.     BYTE    ShanghaiWindows;        /* Are we to `shanghai' windows? */
  826.  
  827.     BYTE    Blinking;            /* Screen blinking enabled? */
  828.     BYTE    FasterLayout;            /* Faster screen layout? */
  829.     BYTE    TitleBar;            /* Is the screen title bar enabled? */
  830.     BYTE    StatusLine;            /* Which mode is the status line in? */
  831.  
  832.     BYTE    UseWorkbench;            /* Use the Workbench screen for the terminal window? */
  833.  
  834.     UBYTE    PubScreenName[MAXPUBSCREENNAME + 1];    /* Name of public screen to open window upon. */
  835.  
  836.     BYTE    TimeMode;            /* Online time/fee display. */
  837.     BYTE    Pad;
  838. };
  839.  
  840.     /* Terminal settings. */
  841.  
  842. struct TerminalSettings
  843. {
  844.     BYTE    BellMode;                /* The bell mode. */
  845.     BYTE    AlertMode;                /* The user alert mode. */
  846.     BYTE    EmulationMode;                /* The terminal emulation mode. */
  847.     BYTE    FontMode;                /* The font mode. */
  848.  
  849.     BYTE    SendCR;                    /* Standard translations. */
  850.     BYTE    SendLF;
  851.     BYTE    ReceiveCR;
  852.     BYTE    ReceiveLF;
  853.  
  854.     UWORD    NumColumns,                /* Size of the terminal window. */
  855.         NumLines;
  856.  
  857.     UBYTE    KeyMapFileName[MAX_FILENAME_LENGTH];    /* Name of custom keymap file. */
  858.     UBYTE    EmulationFileName[MAX_FILENAME_LENGTH];    /* External emulation file name. */
  859.     UBYTE    BeepFileName[MAX_FILENAME_LENGTH];    /* Name of the custom beep sound file. */
  860.  
  861.     UBYTE    TextFontName[MAX_FILENAME_LENGTH];    /* Terminal text font name. */
  862.     WORD    TextFontHeight;                /* Terminal text font height. */
  863. };
  864.  
  865.     /* Path settings. */
  866.  
  867. struct PathSettings
  868. {
  869.     UBYTE    ASCIIUploadPath[MAX_FILENAME_LENGTH];        /* Default ASCII upload file path. */
  870.     UBYTE    ASCIIDownloadPath[MAX_FILENAME_LENGTH];        /* Default ASCII download file path. */
  871.  
  872.     UBYTE    TextUploadPath[MAX_FILENAME_LENGTH];        /* Default text upload file path. */
  873.     UBYTE    TextDownloadPath[MAX_FILENAME_LENGTH];        /* Default text download file path. */
  874.  
  875.     UBYTE    BinaryUploadPath[MAX_FILENAME_LENGTH];        /* Default binary data upload file path. */
  876.     UBYTE    BinaryDownloadPath[MAX_FILENAME_LENGTH];    /* Default binary data download file path. */
  877.  
  878.     UBYTE    DefaultStorage[MAX_FILENAME_LENGTH];        /* Default configuration storage path. */
  879.  
  880.     UBYTE    Editor[MAX_FILENAME_LENGTH];            /* Text file editor to use. */
  881.  
  882.     UBYTE    HelpFile[MAX_FILENAME_LENGTH];            /* Help text file. */
  883. };
  884.  
  885.     /* Miscellaneous settings. */
  886.  
  887. struct MiscSettings
  888. {
  889.     BYTE    Priority;        /* Program priority. */
  890.     BYTE    BackupConfig;        /* Save the configuration between calls? */
  891.  
  892.     BYTE    OpenFastMacroPanel;    /* Open the fast! macro panel? */
  893.     BYTE    ReleaseDevice;        /* Release serial device when iconified? */
  894.  
  895.     BYTE    TransferServer;        /* Enable data transfer server? */
  896.     BYTE    EmulationServer;    /* Enable terminal emulation server? */
  897.  
  898.     BYTE    OverridePath;        /* Override the protocol transfer path? */
  899.     BYTE    AutoUpload;        /* Enable the auto-upload panel? */
  900.     BYTE    SetArchivedBit;        /* Set the archived bit for files sent? */
  901.     BYTE    IdentifyFiles;        /* Try to identify files after download? */
  902.  
  903.     BYTE    TransferIcons;        /* Transfer files along with their icons? */
  904.     BYTE    CreateIcons;        /* Create icons for files saved? */
  905.  
  906.     BYTE    SimpleIO;        /* Use simple file I/O? */
  907.     BYTE    PerfMeter;        /* Transfer performance meter enabled? */
  908. };
  909.  
  910.     /* Clipboard settings. */
  911.  
  912. struct ClipSettings
  913. {
  914.     WORD    ClipboardUnit;        /* Clipboard unit to use. */
  915.  
  916.     WORD    LineDelay,        /* Insert line delay. */
  917.         CharDelay;        /* Insert character delay. */
  918.  
  919.     UBYTE    InsertPrefix[80];    /* Line insertion prefix. */
  920.     UBYTE    InsertSuffix[80];    /* Line insertion suffix. */
  921.  
  922.     UBYTE    LinePrompt[256];    /* Line wait prompt. */
  923.     WORD    SendTimeout;        /* Line send timeout. */
  924.     UBYTE    PacingMode;        /* Text pacing mode. */
  925.     BYTE    Pad;
  926. };
  927.  
  928.     /* Capture and logfile settings. */
  929.  
  930. struct CaptureSettings
  931. {
  932.     BYTE    LogActions;                /* Create logfile? */
  933.     BYTE    LogCall;                /* Create callinfo-compatible logfile? */
  934.     UBYTE    LogFileName[MAX_FILENAME_LENGTH];    /* Default logfile name. */
  935.  
  936.     LONG    MaxBufferSize;                /* Maximum text buffer size. */
  937.     BYTE    BufferEnabled;                /* Is the text buffer enabled? */
  938.  
  939.     BYTE    ConnectAutoCapture;            /* Open capture file on logon? */
  940.     BYTE    CaptureFilterMode;            /* The capture filter mode. */
  941.     UBYTE    CapturePath[MAX_FILENAME_LENGTH];    /* The default path for capture files. */
  942.  
  943.     UBYTE    CallLogFileName[MAX_FILENAME_LENGTH];    /* Name of the call log file. */
  944.     UBYTE    BufferPath[MAX_FILENAME_LENGTH];    /* Text buffer save path. */
  945.  
  946.     BYTE    AutoCaptureDate;            /* Where to include the creation date? */
  947.     BYTE    Pad;
  948.  
  949.     BYTE    OpenBufferWindow;            /* Where to open the buffer window. */
  950.     BYTE    OpenBufferScreen;            /* Where to open the buffer screen. */
  951.  
  952.     BYTE    BufferScreenPosition;            /* Where to place the buffer screen (horizontal) */
  953.     UBYTE    BufferWidth;                /* How long each line in the buffer should be. */
  954.  
  955.     BYTE    RememberBufferWindow;            /* Remember buffer window context? */
  956.     BYTE    RememberBufferScreen;            /* Remember buffer screen context? */
  957. };
  958.  
  959.     /* File settings. */
  960.  
  961. struct FileSettings
  962. {
  963.     UBYTE    ProtocolFileName[MAX_FILENAME_LENGTH];        /* Transfer protocol file name. */
  964.     UBYTE    TranslationFileName[MAX_FILENAME_LENGTH];    /* Character translation file name. */
  965.     UBYTE    MacroFileName[MAX_FILENAME_LENGTH];        /* Keyboard macro file name. */
  966.     UBYTE    CursorFileName[MAX_FILENAME_LENGTH];        /* Cursor key file name. */
  967.     UBYTE    FastMacroFileName[MAX_FILENAME_LENGTH];        /* Fast macro file name. */
  968. };
  969.  
  970.     /* Emulation settings. */
  971.  
  972. struct EmulationSettings
  973. {
  974.     BYTE    CursorMode;        /* Are the cursor keys switched to application mode? */
  975.     BYTE    NumericMode;        /* Is the numeric keypad switched to application mode? */
  976.  
  977.     BYTE    CursorWrap;        /* Is cursor position wrapping enabled? */
  978.     BYTE    LineWrap;        /* Is character line wrapping enabled? */
  979.  
  980.     BYTE    InsertMode;        /* Is the character insertion mode enabled? */
  981.     BYTE    NewLineMode;        /* Is the newline mode enabled? */
  982.  
  983.     BYTE    FontScale;        /* Which font scale is enabled? */
  984.     BYTE    ScrollMode;        /* Is smooth scrolling enabled? */
  985.     BYTE    DestructiveBackspace;    /* Backspace erases characters? */
  986.     BYTE    SwapBSDelete;        /* DEL and BS keys are swapped? */
  987.     BYTE    PrinterEnabled;        /* Printer commands enabled? */
  988.     BYTE    CLSResetsCursor;    /* Clear screen command resets cursor position? */
  989.  
  990.     UBYTE    AnswerBack[80];        /* Answer-back message. */
  991. };
  992.  
  993.     /* File transfer library settings. */
  994.  
  995. struct TransferSettings
  996. {
  997.     UBYTE    DefaultLibrary[MAX_FILENAME_LENGTH],
  998.         ASCIIUploadLibrary[MAX_FILENAME_LENGTH],
  999.         ASCIIDownloadLibrary[MAX_FILENAME_LENGTH],
  1000.         TextUploadLibrary[MAX_FILENAME_LENGTH],
  1001.         TextDownloadLibrary[MAX_FILENAME_LENGTH],
  1002.         BinaryUploadLibrary[MAX_FILENAME_LENGTH],
  1003.         BinaryDownloadLibrary[MAX_FILENAME_LENGTH];
  1004.     BYTE    InternalASCIIUpload,
  1005.         InternalASCIIDownload,
  1006.         QuietTransfer,
  1007.         Pad;
  1008. };
  1009.  
  1010.     /* The new configuration settings. */
  1011.  
  1012. struct Configuration
  1013. {
  1014.     struct SerialSettings        *SerialConfig;
  1015.     struct ModemSettings        *ModemConfig;
  1016.     struct ScreenSettings        *ScreenConfig;
  1017.     struct TerminalSettings        *TerminalConfig;
  1018.     struct EmulationSettings    *EmulationConfig;
  1019.     struct ClipSettings        *ClipConfig;
  1020.     struct CaptureSettings        *CaptureConfig;
  1021.     struct CommandSettings        *CommandConfig;
  1022.     struct MiscSettings        *MiscConfig;
  1023.     struct PathSettings        *PathConfig;
  1024.     struct FileSettings        *FileConfig;
  1025.     struct TransferSettings        *TransferConfig;
  1026. };
  1027.  
  1028.     /* Phonebook entry header. */
  1029.  
  1030. struct PhoneHeader
  1031. {
  1032.     UBYTE    Name[40],        /* BBS name. */
  1033.         Number[100],        /* Phone number. */
  1034.         Comment[100];        /* Comment. */
  1035.  
  1036.     UBYTE    UserName[100],        /* User name for this BSS. */
  1037.         Password[100];        /* Password for user name. */
  1038.  
  1039.     BYTE    QuickMenu;        /* This entry appears in the quick dial menu? */
  1040.     BYTE    Pad;
  1041. };
  1042.  
  1043.     /* A phonebook entry. */
  1044.  
  1045. struct PhoneEntry
  1046. {
  1047.     struct PhoneNode    *Node;
  1048.  
  1049.     struct MinList         TimeDateList;
  1050.  
  1051.     LONG             Count;
  1052.  
  1053.     struct PhoneHeader    *Header;
  1054.     struct Configuration    *Config;
  1055. };
  1056.  
  1057.     /* A text box for several lines of text. */
  1058.  
  1059. struct TextBox
  1060. {
  1061.     struct TextBox        *NextBox;        /* Next box in chain. */
  1062.  
  1063.     LONG             Left,Top,        /* Position and size. */
  1064.                  Width,Height;
  1065.  
  1066.     LONG             LineWidth,        /* Line width in pixels. */
  1067.                  LineHeight;        /* Line height in pixels. */
  1068.  
  1069.     LONG             NumChars,        /* Number of chars per line. */
  1070.                  NumLines;        /* Number of lines. */
  1071.  
  1072.     STRPTR            *Title,            /* Line titles. */
  1073.                 *Text;            /* Line texts. */
  1074. };
  1075.  
  1076.     /* Block marker structure. */
  1077.  
  1078. struct BlockMarker
  1079. {
  1080.         /* The object to manipulate. */
  1081.  
  1082.     APTR            Object;
  1083.  
  1084.         /* Selection and unselection routines. */
  1085.  
  1086.     VOID         (* Select)(struct BlockMarker *Marker,LONG Left,LONG Top,LONG Width,LONG Height);
  1087.     VOID         (* Unselect)(struct BlockMarker *Marker,LONG Left,LONG Top,LONG Width,LONG Height);
  1088.  
  1089.         /* Origin anchor point. */
  1090.  
  1091.     LONG            OriginX,
  1092.                 OriginY;
  1093.  
  1094.         /* First and last selected line. */
  1095.  
  1096.     LONG            FirstLine,
  1097.                 LastLine;
  1098.  
  1099.         /* First and last selected column. */
  1100.  
  1101.     LONG            FirstColumn,
  1102.                 LastColumn;
  1103.  
  1104.         /* Top of display window, lines in the buffer and size of
  1105.          * the display window.
  1106.          */
  1107.  
  1108.     LONG            Top,
  1109.                 Lines,
  1110.                 Width,
  1111.                 Height;
  1112.  
  1113.         /* Canvas left and top edge. */
  1114.  
  1115.     LONG            LeftEdge,
  1116.                 TopEdge;
  1117.  
  1118.         /* Last mouse position. */
  1119.  
  1120.     LONG            LastX,
  1121.                 LastY;
  1122.  
  1123.         /* Single character dimensions. */
  1124.  
  1125.     LONG            TextFontWidth,
  1126.                 TextFontHeight;
  1127.  
  1128.         /* Plane write mask. */
  1129.  
  1130.     UBYTE            WriteMask;
  1131. };
  1132.  
  1133.     /* Global data flow <-> term interface. */
  1134.  
  1135. struct FlowInfo
  1136. {
  1137.     BYTE            Changed;
  1138.  
  1139.     BYTE            NoCarrier,
  1140.                 ZModemUpload;
  1141.  
  1142.     BYTE            Connect,
  1143.                 Voice,
  1144.                 Ring,
  1145.                 Busy,
  1146.                 NoDialTone,
  1147.                 Ok,
  1148.                 Error;
  1149. };
  1150.  
  1151.     /* A scan sequence, somewhat similar to the FlowInfo structure. */
  1152.  
  1153. struct WaitNode
  1154. {
  1155.     struct Node    Node;
  1156.     LONG        Count;        /* Number of characters matched. */
  1157. };
  1158.  
  1159. struct DialNode
  1160. {
  1161.     struct Node         Node;
  1162.     struct PhoneEntry    *Entry;
  1163. };
  1164.  
  1165.     /* A list as employed by the ARexx interface. */
  1166.  
  1167. struct GenericList
  1168. {
  1169.     struct MinList         ListHeader;
  1170.     struct Node        *ListNode;
  1171.     LONG             ListCount;
  1172.     struct SignalSemaphore     ListSemaphore;
  1173. };
  1174.  
  1175.     /* Number of buffers to be used for buffered I/O. */
  1176.  
  1177. #define BUFFER_NUMBER        2
  1178.  
  1179.     /* Auxiliary structure for buffered file I/O. */
  1180.  
  1181. struct Buffer
  1182. {
  1183.     struct Message             Message;            /* Vanilla message header. */
  1184.  
  1185.     BYTE                 SimpleIO;            /* Real simple I/O? */
  1186.     BYTE                 Pad;
  1187.  
  1188.     BYTE                 Read;                /* Last access has read data. */
  1189.     BYTE                 Written;            /* Last access has written data. */
  1190.  
  1191.     LONG                 Action;            /* Action to perform. */
  1192.     LONG                 ActionData[2];            /* Seek and the like. */
  1193.     LONG                 Result;            /* Return value. */
  1194.  
  1195.     BPTR                 FileHandle;            /* Dos filehandle. */
  1196.  
  1197.     UBYTE                *Data;                /* Data buffer. */
  1198.     LONG                 BufLength;            /* Length of data buffer. */
  1199.  
  1200.     LONG                 BufPosition;            /* Read/write pointer into buffer. */
  1201.  
  1202.     LONG                 ReadBufFull;            /* How many bytes are still to be read from the buffer? */
  1203.     LONG                 WriteBufFull;            /* How many bytes are still to be written to the buffer?*/
  1204.  
  1205.     LONG                 RealPosition;            /* Real position in file. */
  1206.     LONG                 Cached;            /* How many bytes in pre-load cache. */
  1207.  
  1208.     UBYTE                *DataBuffer[BUFFER_NUMBER];    /* The data buffers. */
  1209.     LONG                 DataLength[BUFFER_NUMBER];    /* The lengths of the data buffers. */
  1210.     WORD                 DataCount;            /* Which buffer to use. */
  1211.     BYTE                 WriteAccess;            /* TRUE if a write file handle. */
  1212.     BYTE                 LastActionFailed;        /* TRUE if last action failed -> abort actions. */
  1213.  
  1214.     struct Process            *Child;
  1215.     struct Process            *Caller;            /* Synchronization. */
  1216.  
  1217.     BPTR                 DirLock;
  1218.     struct InfoData __aligned     InfoData;
  1219.  
  1220.     BYTE                 Fresh;                /* TRUE if no read/write access has taken place yet. */
  1221.     BYTE                 Used;                /* Did any access take place at all? */
  1222.  
  1223.     struct DateStamp         OpenDate;            /* Date and time when file was opened. */
  1224. };
  1225.  
  1226.     /* xpr serial bits. */
  1227.  
  1228. #define ST_PARTYON    (1 << 0)
  1229. #define ST_PARTYODD    (1 << 1)
  1230. #define ST_7WIRE    (1 << 2)
  1231. #define ST_QBREAK    (1 << 3)
  1232. #define ST_RADBOOGIE    (1 << 4)
  1233. #define ST_SHARED    (1 << 5)
  1234. #define ST_EOFMODE    (1 << 6)
  1235. #define ST_XDISABLED    (1 << 7)
  1236. #define ST_PARTYMARKON    (1 << 8)
  1237. #define ST_PARTYMARK    (1 << 9)
  1238. #define ST_2BITS    (1 << 10)
  1239. #define ST_READ7    (1 << 11)
  1240. #define ST_WRITE7    (1 << 12)
  1241.  
  1242.     /* Miscellaneous definitions. */
  1243.  
  1244. #define MILLION        1000000
  1245.  
  1246.     /* Raster text line attributes. */
  1247.  
  1248. #define    ATTR_UNDERLINE    1
  1249. #define    ATTR_HIGHLIGHT    2
  1250. #define ATTR_BLINK    4
  1251. #define    ATTR_INVERSE    8
  1252.  
  1253.     /* Audio channels. */
  1254.  
  1255. #define LEFT0F  1
  1256. #define RIGHT0F  2
  1257. #define RIGHT1F  4
  1258. #define LEFT1F  8
  1259.  
  1260.     /* Program revision and the approriate info structure. */
  1261.  
  1262. struct TermInfo
  1263. {
  1264.     UWORD    Version;
  1265.     UWORD    Revision;
  1266. };
  1267.  
  1268.     /* termTag.asm */
  1269.  
  1270. extern LONG            TermVersion,
  1271.                 TermRevision;
  1272.  
  1273. extern UBYTE            TermName[],
  1274.                 TermDate[];
  1275.  
  1276.     /* termData.c */
  1277.  
  1278. extern struct ExecBase        *SysBase;
  1279. extern struct DosLibrary    *DOSBase;
  1280.  
  1281. extern struct IntuitionBase    *IntuitionBase;
  1282. extern struct GfxBase        *GfxBase;
  1283. extern struct RxsLib        *RexxSysBase;
  1284. extern struct LocaleBase    *LocaleBase;
  1285. extern struct Library        *GadToolsBase,
  1286.                 *DiskfontBase,
  1287.                 *ConsoleDevice,
  1288.                 *TimerBase,
  1289.                 *UtilityBase,
  1290.                 *AslBase,
  1291.                 *IFFParseBase,
  1292.                 *CxBase,
  1293.                 *IconBase,
  1294.                 *LayersBase,
  1295.                 *TranslatorBase,
  1296.                 *WorkbenchBase,
  1297.                 *AmigaGuideBase,
  1298.                 *XEmulatorBase;
  1299.  
  1300. extern BYTE             Kick30;
  1301.  
  1302. extern struct timerequest    *TimeRequest;
  1303. extern struct MsgPort        *TimePort;
  1304.  
  1305. extern struct IOStdReq        *ConsoleRequest;
  1306. extern struct KeyMap        *KeyMap;
  1307. extern BPTR             KeySegment;
  1308.  
  1309. extern struct Screen        *Screen,
  1310.                 *DefaultPubScreen;
  1311. extern struct Window        *Window;
  1312. extern LONG             WindowWidth,
  1313.                  WindowHeight,
  1314.                  WindowLeft,
  1315.                  WindowTop;
  1316. extern struct Window        *StatusWindow;
  1317. extern struct Gadget        *StatusGadget;
  1318. extern UWORD             StatusOffset;
  1319. extern APTR             OldWindowPtr;
  1320. extern struct BitMap        *InterleavedBitMap;
  1321. extern struct Requester        *RequesterList;
  1322. extern UBYTE             ScreenTitle[80];
  1323. extern UBYTE             DepthMask;
  1324. extern LONG             RenderPens[4],
  1325.                  MappedPens[2][32],
  1326.                  SafeTextPen;
  1327. extern struct DrawInfo        *DrawInfo;
  1328. extern LONG             ScreenWidth,
  1329.                  ScreenHeight;
  1330. extern BYTE             UseMasking;
  1331.  
  1332. extern struct BlockMarker    *WindowMarker;
  1333. extern ULONG             ClickSecs,ClickMicros;
  1334. extern BYTE             FirstClick,HoldClick;
  1335. extern LONG             ClickX,ClickY;
  1336.  
  1337. extern struct AppWindow        *WorkbenchWindow;
  1338. extern struct MsgPort        *WorkbenchPort;
  1339.  
  1340. extern struct ViewPort        *VPort;
  1341. extern struct RastPort        *RPort;
  1342. extern struct Region        *ClipRegion,
  1343.                 *OldRegion;
  1344. extern struct TextFont        *GFX,*CurrentFont,*UserTextFont;
  1345. extern WORD             UserFontHeight,UserFontWidth,UserFontBase;
  1346. extern struct TTextAttr         UserFont;
  1347. extern struct TextFont        *TextFont;
  1348. extern WORD             TextFontHeight,TextFontWidth,TextFontBase;
  1349. extern struct TTextAttr         TextAttr;
  1350. extern UBYTE             TextFontName[40],UserFontName[40];
  1351. extern struct TagItem         TagDPI[2];
  1352. extern APTR             VisualInfo;
  1353. extern UWORD             FontRightExtend;
  1354.  
  1355. extern ULONG            (* __regargs ReadAPen)(struct RastPort *RPort);
  1356. extern ULONG            (* __regargs ReadBPen)(struct RastPort *RPort);
  1357. extern ULONG            (* __regargs ReadDrMd)(struct RastPort *RPort);
  1358. extern ULONG            (* __regargs SetWrMsk)(struct RastPort *RPort,ULONG Mask);
  1359.  
  1360. extern UWORD             StandardPens[];
  1361. extern UWORD             ANSIPens[];
  1362. extern UWORD             EGAPens[];
  1363. extern UWORD             AtomicColours[16],
  1364.                  EGAColours[16],
  1365.                  ANSIColours[16];
  1366. extern UWORD             DefaultColours[32],
  1367.                  BlinkColours[32],
  1368.                  NormalColours[32],
  1369.                  StandardColours[32],
  1370.                  PaletteSize;
  1371.  
  1372. extern LONG            *OffsetXTable,
  1373.                 *OffsetYTable;
  1374.  
  1375. extern struct Process        *ThisProcess;
  1376. extern struct Process        *RexxProcess,
  1377.                 *RexxBackgroundProcess;
  1378. extern struct MsgPort        *TermRexxPort;
  1379. extern struct Process        *StatusProcess;
  1380. extern struct Process        *BufferProcess;
  1381. extern struct WBStartup        *WBenchMsg;
  1382. extern BPTR             WBenchLock;
  1383. extern BYTE             ClipBit,
  1384.                  CheckBit;
  1385. extern BYTE             InRexx;
  1386. extern WORD             LimitCount;
  1387. extern UBYTE             LimitMacro[MAX_FILENAME_LENGTH];
  1388.  
  1389. extern struct InputEvent    *FakeInputEvent;
  1390.  
  1391. extern struct IOExtSer        *ReadRequest;
  1392. extern struct IOExtSer        *WriteRequest;
  1393. extern struct MsgPort        *ReadPort;
  1394. extern APTR             ReadBuffer,
  1395.                  HostReadBuffer;
  1396. extern UBYTE            *SerialMessage;
  1397. extern ULONG             DTERate;
  1398.  
  1399. extern LONG             BaudRates[],
  1400.                  NumBaudRates;
  1401.  
  1402. extern UBYTE             NewDevice[MAX_FILENAME_LENGTH];
  1403. extern LONG             NewUnit;
  1404. extern BYTE             UseNewDevice,
  1405.                  UseNewUnit;
  1406.  
  1407. extern struct Catalog        *Catalog;
  1408. extern struct Locale        *Locale;
  1409.  
  1410. extern struct Hotkeys         Hotkeys;
  1411. extern struct NewBroker         NewTermBroker;
  1412.  
  1413. extern struct TextAttr         DefaultFont;
  1414. extern struct TextAttr         GFXFont;
  1415.  
  1416. extern UWORD __chip         Stopwatch[(1 + 16 + 1) * 2];
  1417.  
  1418. extern ULONG __chip         Crosshatch,Ghosting;
  1419.  
  1420. extern BYTE             IsPrintable[256],
  1421.                  CharType[256];
  1422. extern UBYTE             IBMConversion[256];
  1423. extern BYTE             GfxTable[256];
  1424.  
  1425. extern struct SpecialKey     SpecialKeys[13];
  1426. extern JUMP            *SpecialTable;
  1427.  
  1428. extern BYTE             AbortMap[256];
  1429. extern JUMP            *AbortTable;
  1430.  
  1431. extern VOID            (* __regargs ConDump)(STRPTR,LONG);
  1432. extern VOID            (* __regargs ConOutput)(STRPTR,LONG);
  1433. extern VOID            (* __regargs ConProcessData)(register STRPTR,register LONG);
  1434.  
  1435. extern UBYTE             SharedBuffer[512];
  1436. extern UBYTE             ARexxCommandBuffer[256],
  1437.                  AmigaDOSCommandBuffer[256];
  1438.  
  1439. extern struct NewMenu         TermMenu[];
  1440. extern struct Menu        *Menu;
  1441.  
  1442. extern struct TermPort        *TermPort;
  1443.  
  1444. extern struct Configuration    *Config,
  1445.                 *PrivateConfig,
  1446.                 *BackupConfig;
  1447. extern struct SpeechConfig     SpeechConfig;
  1448. extern BYTE             English;
  1449. extern BYTE             Status;
  1450. extern BYTE             Online,WasOnline;
  1451. extern ULONG             OnlineMinutes,OnlinePlus;
  1452. extern UWORD             PublicModes;
  1453.  
  1454. extern UBYTE             LastConfig[MAX_FILENAME_LENGTH];
  1455. extern UBYTE             DefaultPubScreenName[MAXPUBSCREENNAME + 1],
  1456.                  SomePubScreenName[MAXPUBSCREENNAME + 1];
  1457.  
  1458. extern struct Buffer        *FileCapture;
  1459. extern BPTR             PrinterCapture;
  1460. extern UBYTE             CaptureName[MAX_FILENAME_LENGTH];
  1461. extern BYTE             StandardPrinterCapture,
  1462.                  ControllerActive;
  1463. extern LONG             BufferFlushCount;
  1464.  
  1465. extern UBYTE            **BufferLines;
  1466. extern LONG             Lines;
  1467. extern struct SignalSemaphore    *BufferSemaphore;
  1468. extern LONG             MaxLines;
  1469. extern LONG             BufferSpace;
  1470. extern BYTE             BufferClosed;
  1471. extern BYTE             BufferFrozen;
  1472.  
  1473. extern struct SoundConfig     SoundConfig;
  1474. extern BYTE             SoundChanged;
  1475.  
  1476. extern struct PhoneEntry    **Phonebook;
  1477. extern LONG             PhoneSize;
  1478. extern LONG             NumPhoneEntries;
  1479. extern UBYTE             PhonePassword[256];
  1480. extern BYTE             PhonePasswordUsed,
  1481.                  RebuildMenu;
  1482. extern UBYTE             Password[100];
  1483. extern UBYTE             UserName[100];
  1484. extern UBYTE             GlobalPassword[256];
  1485.  
  1486. extern UBYTE             CurrentBBSName[40],
  1487.                  CurrentBBSNumber[100],
  1488.                  CurrentBBSComment[100];
  1489.  
  1490. extern UBYTE             LastPhone[MAX_FILENAME_LENGTH];
  1491. extern UBYTE             LastKeys[MAX_FILENAME_LENGTH];
  1492. extern UBYTE             LastMacros[MAX_FILENAME_LENGTH];
  1493. extern UBYTE             LastTranslation[MAX_FILENAME_LENGTH];
  1494. extern UBYTE             LastCursorKeys[MAX_FILENAME_LENGTH];
  1495. extern UBYTE             LastSpeech[MAX_FILENAME_LENGTH];
  1496. extern UBYTE             LastSound[MAX_FILENAME_LENGTH];
  1497.  
  1498. extern struct MacroKeys        *MacroKeys;
  1499. extern struct CursorKeys    *CursorKeys;
  1500.  
  1501. extern UBYTE            *StripBuffer;
  1502.  
  1503. extern UWORD             LastLine,LastColumn,LastPixel;
  1504. extern BYTE             Charset,Attributes,FgPen,BgPen;
  1505. extern WORD             CursorX,CursorY,Top,Bottom;
  1506. extern BYTE             UseRegion,RegionSet,InSequence,Quiet,Blocking;
  1507. extern BYTE            *TabStops;
  1508. extern UWORD             TabStopMax;
  1509. extern BYTE             CharMode[2];
  1510.  
  1511. extern BYTE             ResetDisplay,
  1512.                  DisplayReopened,
  1513.                  FixPubScreenMode,
  1514.                  FixScreenSize,
  1515.                  Apocalypse;
  1516.  
  1517. extern STRPTR             AttentionBuffers[SCAN_COUNT];
  1518. extern BYTE             BaudPending,FullCheck,UseFlow;
  1519. extern UBYTE             BaudBuffer[80],BaudCount;
  1520.  
  1521. extern struct FlowInfo         FlowInfo;
  1522. extern STRPTR             DataHold;
  1523. extern LONG             DataSize;
  1524.  
  1525. extern BYTE             BinaryTransfer;
  1526. extern LONG             TransferBits;
  1527. extern VOID            (* __regargs ConTransfer)(STRPTR,LONG);
  1528.  
  1529. extern struct Window        *TransferWindow,
  1530.                 *TransferPerfWindow;
  1531. extern struct Menu        *TransferMenu;
  1532. extern struct Gadget        *TransferGadgetArray[GAD_TRANSFER_SKIP + 1];
  1533. extern struct List         TransferInfoList;
  1534. extern struct TextBox        *TransferBoxArray[BOX_TRANSFER_RIGHT2 + 1],
  1535.                 *TransferBoxList;
  1536.  
  1537. extern struct FileTransferInfo    *FileTransferInfo;
  1538.  
  1539. extern UBYTE            *DownloadPath;
  1540. extern BYTE             Uploading;
  1541. extern BYTE             DidTransfer;
  1542.  
  1543. extern struct Library        *XProtocolBase;
  1544. extern struct XPR_IO        *XprIO;
  1545.  
  1546. extern UBYTE             ProtocolOptsBuffer[256];
  1547. extern BYTE             NewLibrary,NewOptions;
  1548. extern UBYTE             LastXprLibrary[MAX_FILENAME_LENGTH];
  1549. extern UBYTE             ConvNumber[30],ConvNumber10[30];
  1550. extern BYTE             UsesZModem,SendAbort,TransferAborted,TransferFailed,TransferError;
  1551.  
  1552. extern UBYTE             ZModemCancel[20];
  1553.  
  1554. extern LONG             CurrentPay;
  1555. extern LONG             PayPerUnit[2];
  1556. extern LONG             SecPerUnit[2];
  1557. extern LONG             WhichUnit;
  1558. extern struct PhoneEntry    *ChosenEntry;
  1559. extern BYTE             ChosenInUse;
  1560.  
  1561. extern UBYTE             WindowName[256];
  1562.  
  1563. extern BYTE             WeAreBlocking;
  1564.  
  1565. extern struct List        *DialList;
  1566.  
  1567. extern BYTE             SendStartup;
  1568.  
  1569. extern BYTE             ReleaseSerial;
  1570. extern BYTE             ResetSerial;
  1571. extern BYTE             BatchMode;
  1572. extern BYTE             MainTerminated,
  1573.                  IconTerminated,
  1574.                  DoIconify,
  1575.                  DoDial;
  1576. extern BYTE             ConfigChanged,PhonebookChanged,TranslationChanged,
  1577.                  MacroChanged,CursorKeysChanged,FastMacrosChanged,
  1578.                  HotkeysChanged,SpeechChanged,BufferChanged;
  1579.  
  1580. extern UBYTE             LastDownload[MAX_FILENAME_LENGTH];
  1581. extern UBYTE             LastUpload[MAX_FILENAME_LENGTH];
  1582.  
  1583. extern struct Hook         CommandHook,
  1584.                  PasswordHook;
  1585. extern BYTE             DontActivate;
  1586.  
  1587. extern struct Window        *CommandWindow;
  1588. extern struct Gadget        *CommandGadget;
  1589. extern struct Gadget        *ActiveGadget;
  1590.  
  1591. extern struct Process        *ClipProcess;
  1592. extern struct MsgPort        *ClipPort;
  1593. extern BYTE             ClipInput,
  1594.                  ClipXerox,
  1595.                  ClipPrefix;
  1596.  
  1597. extern UBYTE             SendPrompt[256];
  1598. extern LONG             SendPromptLen;
  1599. extern BYTE            (* __regargs SendLine)(register STRPTR,register LONG);
  1600.  
  1601. extern struct Window        *PacketWindow;
  1602. extern struct Gadget        *PacketGadgetArray[2];
  1603. extern struct Menu        *PacketMenu;
  1604. extern struct Gadget        *PacketGadgetList;
  1605. extern struct List         PacketHistoryList;
  1606.  
  1607. extern struct NewMenu         GetsMenu[];
  1608.  
  1609. extern BYTE             Initializing,LoadColours;
  1610.  
  1611. extern UBYTE            *Raster,*RasterAttr;
  1612. extern LONG             RasterWidth,RasterHeight;
  1613. extern BYTE             Marking;
  1614. extern struct SignalSemaphore    *RasterSemaphore;
  1615. extern BYTE             RasterEnabled;
  1616.  
  1617. extern struct GenericList    *GenericListTable[GLIST_COUNT];
  1618.  
  1619. extern ULONG             VersionProps[2];
  1620.  
  1621. extern struct Window        *TopWindow;
  1622. extern struct Window        *WindowStack[5];
  1623. extern WORD             WindowStackPtr;
  1624.  
  1625. extern LONG             TermID;
  1626. extern UBYTE             TermIDString[];
  1627. extern UBYTE             RexxPortName[256];
  1628.  
  1629. extern struct List         FastMacroList;
  1630. extern LONG             FastMacroCount;
  1631. extern UBYTE             LastFastMacros[MAX_FILENAME_LENGTH];
  1632. extern struct Window        *FastWindow;
  1633. extern WORD             FastWindowLeft,
  1634.                  FastWindowTop,
  1635.                  FastWindowHeight;
  1636.  
  1637. extern struct List         DoubleBufferList;
  1638. extern struct SignalSemaphore     DoubleBufferSemaphore;
  1639.  
  1640. extern struct XEM_IO        *XEM_IO;
  1641. extern ULONG             XEM_Signal;
  1642. extern struct XEmulatorHostData     XEM_HostData;
  1643. extern UBYTE            *OptionTitle;
  1644. extern struct List         XEM_MacroList;
  1645. extern struct XEmulatorMacroKey    *XEM_MacroKeys;
  1646. extern UBYTE             EmulationName[40];
  1647.  
  1648. extern struct List         EmptyList;
  1649.  
  1650. extern UWORD             ScrollLineFirst,ScrollLineLast,
  1651.                  ScrollLineCount;
  1652. extern struct ScrollLineInfo    *ScrollLines;
  1653.  
  1654. extern struct MsgPort        *ReviewPort;
  1655. extern struct Window        *ReviewWindow;
  1656.  
  1657. extern ULONG             BytesIn,
  1658.                  BytesOut;
  1659. extern struct DateStamp         SessionStart;
  1660. extern struct Window        *InfoWindow;
  1661.  
  1662. extern LONG             InterWidth,
  1663.                  InterHeight;
  1664.  
  1665. extern struct TranslationEntry    **SendTable,
  1666.                 **ReceiveTable;
  1667.  
  1668. extern struct WindowInfo     WindowInfoTable[];
  1669.  
  1670.     /* And now for something completely different... */
  1671.  
  1672. #include "termProtos.h"
  1673.